package com.abl.core.service.sys;


import com.abl.core.common.security.AuthUser;
import com.abl.core.domain.db.SysRole;
import com.abl.core.domain.project.PageSearch;
import com.mybatisflex.core.paginate.Page;

import java.util.ArrayList;
import java.util.List;

/**
 * 资源表服务
 */
public interface SysRoleService {


    boolean insert(SysRole sysRole);

    boolean delete(String ids);

    boolean update(SysRole sysRole);

    Page<SysRole> pageMyRole(SysRole sysRole, PageSearch pageSearch);

    SysRole info(String id);

    //更新角色菜单
    boolean updateRoleMenu(String roleId, String menuIds);

    //系统中全部角色
    List<SysRole> allMyRole();

    //读取角色具备资源
    ArrayList<String> roleHasRes(List<String> roleIds);

    //读取角色具备资源
    ArrayList<String> roleHasRes(String roleId);

    //读取角色排除资源
    ArrayList<String> roleExcludeRes(List<String> roleIds);

    //读取角色排除资源
    ArrayList<String> roleExcludeRes(String roleId);

    //刷新角色资源缓存
    void updateRoleResCache(String roleId);

    //刷新角色资源缓存
    void updateRoleResCache(List<String> roleIds);

    //    判断角色是否具备 URI访问资格.
    boolean checkHasRes(String requestURI, AuthUser authUser);

    //    判断角色是否具备 URI访问资格.
    boolean checkHasRes(String roleId, String requestURI);

    //    判断角色是否具备 URI访问资格.
    boolean checkHasRes(List<String> roleIds, String requestURI);


}
